package datos;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import conexion.Conexion;

public class AccionesCompra {

public static int getMaxNumFactura(int tipoCompra){
		
		
		int maxNumFactura=0;
		try{
			Statement stm=Conexion.conectar().createStatement();
			ResultSet rs=stm.executeQuery("select max(idCompra) from Compra where idTipoCompra="+tipoCompra);
			while(rs.next()){
				maxNumFactura=(rs.getInt("max(idCompra)"));
			}
			return maxNumFactura;
		}catch(Exception e){
			e.printStackTrace();
		}
		return maxNumFactura;
	}

	public static void addCompra(Compra c){
		try{
			int idCompra=c.getIdCompra();
			int idTipoCompra=c.getIdTipoCompra();
			int idProveedor=c.getIdProveedor();
			int idTipoPago=c.getIdTipoPago();
			double total=c.getTotal();
			double flete=c.getFlete();
			double descuento=c.getDescuentoCompra();
			double recargo=c.getRecargoCompra();
			Statement stm=Conexion.conectar().createStatement();
			stm.executeUpdate("insert into compra values ("+idCompra+","+idTipoCompra+","+idProveedor+","+"now(),"+flete+","+total+","+descuento+","+recargo+")");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static ArrayList<Compra> getAll(){
		ArrayList<Compra> compras=new ArrayList<Compra>();
		try{
			Statement stm=Conexion.conectar().createStatement();
			ResultSet rs=stm.executeQuery("select * from compra");
			while(rs.next()){
				Compra c=new Compra(rs.getInt("idCompra"),rs.getDate("fecha"),rs.getInt("idTipoCompra"), rs.getDouble("flete"), rs.getDouble("total"), rs.getInt("idProveedor"),rs.getDouble("descuento"),rs.getDouble("recargo"));
				compras.add(c);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return compras;
	}
	
	public static Compra getOne(int idCompra, int idTipoCompra){
		Compra c=null;
		try{
			Statement stm=Conexion.conectar().createStatement();
			ResultSet rs=stm.executeQuery("select * from compra where idCompra="+idCompra+" and idTipoCompra="+idTipoCompra);
			while(rs.next()){
				 c=new Compra(rs.getInt("idCompra"),rs.getDate("fecha"),rs.getInt("idTipoCompra"), rs.getDouble("flete"), rs.getDouble("total"), rs.getInt("idProveedor"),rs.getDouble("descuento"),rs.getDouble("recargo"));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return c;
	}
	
	public static void updateTotalCompra(Compra c, double subtotal){
		int idCompra=c.getIdCompra();
		int idTipoCompra=c.getIdTipoCompra();
		try{
			Statement stm=Conexion.conectar().createStatement();
			stm.executeUpdate("update compra set total=total-"+subtotal+" where idCompra="+idCompra+" and idTipoCompra="+idTipoCompra);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void deleteOne(int idCompra, int idTipoCompra){
		try{
			Statement stm=Conexion.conectar().createStatement();
			stm.executeUpdate("delete from compra where idCompra="+idCompra+" and idTipoCompra="+idTipoCompra);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static void updateTotal(Compra c, double total){
		int idCompra=c.getIdCompra();
		int idTipoCompra=c.getIdTipoCompra();
		try{
			Statement stm=Conexion.conectar().createStatement();
			stm.executeUpdate("update compra set total="+total+" where idCompra="+idCompra+" and idTipoCompra="+idTipoCompra);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
